<?php
/**
 * Created by PhpStorm.
 * User: mac
 * Date: 2018-12-16
 * Time: 23:05
 */

/**
 * $host
 *
 * $port
 *
 * $mode 运行模式 SWOOLE_PROCESS(多进程模式 默认) SWOOLE_BASE(基本模式)
 *
 * $socket_type 指定socket类型 支持TCP、UDP、TCP6、UDP6、UnixSocket Stream/Dgram 6种
 */
$serv = new swoole_server('127.0.0.1', '8000');

$serv->set([
    'worker_num' => 8, //worker进程数 CPU核数的1-4倍
    'max_request' => 2000 //表示worker进程在处理完n次请求后结束运行
]);

//监听连接进入事件
/**
 * $fd 客户端连接的唯一标识
 * $reactor_id 线程ID
 */
$serv->on('connect', function ($serv, $fd, $reactor_id) {
    echo "Client: {$reactor_id}-{$fd}Connect.\n";
});

//监听数据接收事件
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
    $serv->send($fd, "Server: {$from_id}".$data);
});

//监听连接关闭事件
$serv->on('close', function ($serv, $fd) {
    echo "Client: Close.\n";
    //关闭服务器
    $serv->shutdown();
});

//启动服务器
$serv->start();